package com.ztgf.order.models.vo;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ztgf.common.annotations.CustomerBigDecimalSerialize;
import com.ztgf.order.models.dto.OrderInvoiceDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 订单表VO
 *
 * @author chenyu.wang
 * @Date 2020-06-03 15:32:26
 */
@Data
public class OrderInfoVO implements Serializable {
    @ApiModelProperty(value = "主键")
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;

    @ApiModelProperty(value = "订单编号")
    private String orderNo;

    @ApiModelProperty(value = "买家店铺id")
    private Long buyerShopId;
    @ApiModelProperty(value = "订单下商品信息")
    private List<OrderCommodityDetailVO> orderCommodityDetailVOList;
    @ApiModelProperty(value = "支付方式 0全款、1分批")
    private Integer payType;
    @ApiModelProperty(value = "收货区域id")
    private Long areaId;
    @ApiModelProperty(value = "收货地址id")
    private Long addressId;
    @ApiModelProperty(value = "发票抬头id")
    private Long invoiceHeadId;
    @ApiModelProperty(value = "发票信息")
    private OrderInvoiceDTO orderInvoiceDTO;

    @ApiModelProperty(value = "配送方式")
    private Integer deliveryType;

    @ApiModelProperty(value = "商品件数")
    private Integer totalNum;

    @ApiModelProperty(value = "商品总价")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal totalMoney;

    @ApiModelProperty(value = "店铺优惠")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal discountMoney;

    @ApiModelProperty(value = "应付总额")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal actualMoney;

    @ApiModelProperty(value = "运费")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal freightMoney;

    @ApiModelProperty(value = "收货人")
    private String userName;

    @ApiModelProperty(value = "收货人电话")
    private String userMobile;

    @ApiModelProperty(value = "收货人地址")
    private String userAddress;

    @ApiModelProperty(value = "卖家店铺id")
    private Long sellShopId;

    @ApiModelProperty(value = "买家店铺id")
    private Long buyShopId;

    @ApiModelProperty(value = "类型;0普通、1询价")
    private Integer type;

    @ApiModelProperty(value = "佣金")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal commissionMoney;
    @ApiModelProperty(value = "最后的支付佣金")
    private BigDecimal lastCommissionMoney;
    @ApiModelProperty(value = "已退佣金")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal refundCommissionMoney;

    @ApiModelProperty(value = "订单备注")
    private String orderNote;

    @ApiModelProperty(value = "下单类型 0普通 1代客下单")
    private Integer placeOrderType;

    @ApiModelProperty(value = "是否改价，0否，1是")
    private Integer isChangePrice;

    @ApiModelProperty(value = "操作人名字")
    private String operatorName;

    @ApiModelProperty(value = "操作人Id")
    private Long operatorId;

    @ApiModelProperty(value = "卖家店铺类型 0 担保交易 1先款交易")
    private Integer sellPayType;

    @ApiModelProperty(value = "询盘订单类型;0普通、1询价")
    private Integer purchaseOrderType;

    @ApiModelProperty(value = "询盘商品总服务费")
    private BigDecimal purchaseFeeMoneyScalePrice;

    @ApiModelProperty(value = "支付类型对象")
    private List<OrderPaymentTypeVO> paymentTypeVOList;
}
